
import time


#装饰器无参数传入的写法
def noshow_time(fun):
    def inner():
        start_time=time.time()
        fun()
        end_time=time.time()
        print ('执行完成,时间消耗为:',end_time-start_time)
    return inner #函数对象

#装饰器有参数传入的写法
def show_time(fun):
    def inner(*args,**kwargs):
        start_time=time.time()
        fun(*args,**kwargs)
        end_time=time.time()
        print ('执行完成,时间消耗为:',end_time-start_time)
    return inner

@noshow_time   #noshow_time(test)将整个函数返回给函数对象inner，test=noshow_time(test)，调用inner相当于调用了函数
def test():
    print('执行自动化测试')
    time.sleep(1)

@show_time
def args (*args,**kwargs):
    print(args,kwargs)
    time.sleep(1)

"""
show_time(args)将整个函数对象返回给一个参数args，
args=show_time(args)，调用args（）函数相当于调用了这个函数
"""

if __name__=='__main__':
    # test=noshow_time(test)
    # test()

    test()
    args(100,c=1,name='廖干')